﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using UtilityExtensions;
using BOL.Ventas;
using BOL.UI;
using BOL.Cliente;
using System.IO;
using BOL;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;
using System.Data;
using BOL.Comun;

namespace UILGestion.VentaAdmin.OrdenVenta
{
    public partial class EtapaArchivoItem : System.Web.UI.UserControl
    {
        private string EtapaContratoInfo = "EtapaContratoInfo";


        public EtapaArchivoItem()
        {
            bol = new EtapaBL();
        }

        EtapaBL bol;

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public void Load(int idEtapa)
        {
            this.internalID.Value = idEtapa.ToString();
            this.BindDataItem();
        }


        protected void CancelItem(object sender, GridViewCancelEditEventArgs e)
        {
            try
            {
                itemGridView.EditIndex = -1;
                itemGridView.FooterRow.Visible = true;
                BindDataItem();


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void AddItem(object sender, EventArgs e)
        {
            try
            {
                //TextBox idUITXT =
                //    ((TextBox)itemGridView.FooterRow.FindControl("idArchivoTXT"));

                ////actualiza el 

                
                //    item.AddSet(DbUtil.Db,
                //                idRequisitoItem;


                //DataSet ds = (DataSet)Session[idColeccion.Value];

                //ds.Tables[PROFORMAITEMINFO].ImportRow(Util.EntidadToDataRow(item));

                //BindDataItem();
                //((UIProformaEditForm)this.Parent.Parent).SetEstadistica();

                //GridUpdatePanel.Update();
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "").Replace("\r", "").Replace("\n", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void UpdateItem(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                GridView gv = ((GridView)sender);
                string archivo =
                    ((TextBox)gv.Rows[e.RowIndex].FindControl("idArchivoTxt")).Text;
                int idinternal = int.Parse(gv.DataKeys[e.RowIndex].Values[0].ToString());
                
                if (archivo.ToInt()>0)
                {

                    int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
                    
                    using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
                    {
                        var requisito = _db.Etapas.Single(p => p.idInternal == this.internalID.Value.ToInt());
                        var empleado = _db.Empleados.Single(p => p.idInternal == idEmpleadoEmisor);
                    
                        if (idinternal == 0)
                        {
                            requisito.updatePlanoEtapa(archivo.ToInt());
                        }
                        //if (idinternal == 1)
                        //{
                        //    requisito.updateContratoSeparacion(archivo.ToInt(), empleado.usuario);
                        //}
                        //if (idinternal == 2)
                        //{
                        //    requisito.updateContratoVenta(archivo.ToInt(), empleado.usuario);
                        //}

                        
                        
                        _db.SubmitChanges();
                    }
                    
                }
                
                
                gv.EditIndex = -1;
                
                BindDataItem();


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

        protected void EditItem(object sender, GridViewEditEventArgs e)
        {
            try
            {
                itemGridView.EditIndex = e.NewEditIndex;
                BindDataItem();
                //itemGridView.FooterRow.Visible = false;
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }



        public void Load(string idParent,int idProyecto)

        {
            this.internalID.Value = idParent.ToString();
            this.idProyecto.Value = idProyecto.ToString();
            BindDataItem();
            

        }
        
        private void resetEmpty()
        {
            //if (itemGridView.Rows.Count == 0)
            //{
            //    List<OrdenVentaRequisitoInfo> itemList0 = new List<OrdenVentaRequisitoInfo>();
            //    OrdenVentaRequisitoInfo itemcero = new OrdenVentaRequisitoInfo();

            //    itemList0.Add(itemcero);
            //    itemGridView.DataSource = itemList0;
            //    itemGridView.DataBind();
            //    itemGridView.Rows[0].Visible = false;
            //}

        }

        private void BindDataItem()
        {
            var etapa=DbUtil.Db.Etapas.SingleOrDefault(p=>p.idInternal==internalID.Value.ToInt());

            List<EtapaArchivoInfo> lista = new List<EtapaArchivoInfo>();
                                                     
            
                    EtapaArchivoInfo nuevo1 = new EtapaArchivoInfo();
                    nuevo1.idInternal=0;
                    nuevo1.contratoStr = "Plano Unidad Inmobiliaria";
            
                    nuevo1.idArchivo= etapa.idArchivo;
                    nuevo1.bitExiste=etapa.idArchivo==null?false:true;
                    lista.Add(nuevo1);


                  

            itemGridView.DataSource = lista;
            itemGridView.DataBind();
            resetEmpty();

        }

        public void HideEditRow()
        {
            //ultimas  columnas
            var councolumans = itemGridView.Columns.Count;
            itemGridView.Columns[councolumans - 1].Visible = false;  //solo el de editar
            itemGridView.DataBind();

        }

        protected void loadArchivo(object sender, EventArgs e)
        {
            try
            {

                Button lnkdivrecurso = (Button)sender;
                string idItem = lnkdivrecurso.CommandName.ToString();
                int rowindex = int.Parse(lnkdivrecurso.CommandArgument);

                FileUpload archivoFileUpload = (FileUpload)itemGridView.Rows[rowindex].FindControl("archivoFileLoad");
                

                if (archivoFileUpload.HasFile)
                {

                    // 1. Save logic

                    //string directorio = AppDomain.CurrentDomain.RelativeSearchPath;

                    
                    TextBox idArchivoTXT = (TextBox)itemGridView.Rows[rowindex].FindControl("idArchivoTXT");
                    Image Archivoimg = (Image)itemGridView.Rows[rowindex].FindControl("Archivoimg");

                    ArchivoBL archivoBol = new ArchivoBL();
                    Archivo archivo=null;
                    if (idItem.ToInt()==0)
                        archivo=archivoBol.AddEtapaImagen(archivoFileUpload, internalID.Value.ToInt());
                    //if (idItem.ToInt() == 1)
                    //    archivo = archivoBol.AddEtapaContrato(archivoFileUpload, internalID.Value.ToInt());
                    //if (idItem.ToInt() == 2)
                    //    archivo = archivoBol.AddEtapaContrato(archivoFileUpload, internalID.Value.ToInt());
                    
                    Archivoimg.ImageUrl = "~/Images/completo.png";
                    idArchivoTXT.Text = archivo.idInternal.ToString();

                }

                   
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

    }
}